<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>作用域</title>
    <script>
        /*
            作用域（scope）
             - 作用域指的是变量的作用范围
             - 变量的作用域指一个变量在哪些位置可见，在哪些位置不可见
             - 在JS中作用域分成两种：
                全局作用域
                局部作用域
                    - 函数作用域
                    - 块作用域

             - 全局作用域
                - 所有的直接写在script标签内部的变量都位于全局作用域中
                - 在代码块中（if switch while for）使用var声明的变量也在全局作用域中
                - 在全局作用域中创建的变量，被称为全局变量，全局变量可以在任意位置被访问
                - 在全局作用域中创建的函数，被称为全局函数，全局函数可以在任意位置被调用
                - 全局作用域在网页加载时创建，在网页关闭时销毁
         */
        // var a = 10;
        // var b = 20;

        // {
        //     var e = 44; //var声明的变量没有块作用域，所以在代码块中使用var声明的变量依然是全局变量
        //     let f = 55; //let声明的变量有块作用域
        // }

        // function fn() {
        //     var c = 30;
        // }


        var a = 10; // 全局变量a

        function fn() {
            console.log('fn函数~~');
        }

        // fn();

        (function () {
            // console.log('函数内部-->', a);
            fn();
        })();


    </script>
</head>
<body>

</body>
</html>